home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / pwdb / pwdb_unix.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  154 lines

  1. /*
  2.  * external defines for the pwdb libraries
  3.  *
  4.  * this library includes defines for passwd+shadow and group files
  5.  */
  6.  
  7. #ifndef PWDB_STANDARD_PUBLIC_H
  8. #define PWDB_STANDARD_PUBLIC_H
  9.  
  10. /*
  11.  * The definitions for VANILLA UNIX
  12.  */
  13.  
  14. /* STRUCTURE(S) */
  15.  
  16. struct __pwdb_passwd {          /* The passwd structure. */
  17.      char *pw_name;        /* Username.  */
  18.      char *pw_passwd;        /* Password.  */
  19.      __uid_t pw_uid;        /* User ID.  */
  20.      __gid_t pw_gid;        /* Group ID.  */
  21.      char *pw_gecos;        /* Real name.  */
  22.      char *pw_dir;        /* Home directory.  */
  23.      char *pw_shell;        /* Shell program.  */
  24. };
  25.  
  26. /* FUNCTIONS */
  27.  
  28. /*
  29.  * Read next entry from the password-file stream, opening it if necessary.
  30.  */
  31.  
  32. struct __pwdb_passwd *__pwdb_getpwent(void);
  33.  
  34. /*
  35.  * Open and close the password-file stream
  36.  */
  37.  
  38. void __pwdb_setpwent(void);
  39. void __pwdb_endpwent(void);
  40.  
  41. /*
  42.  * Read/write password entry from/to __stream
  43.  */
  44.  
  45. struct __pwdb_passwd *__pwdb_fgetpwent(FILE *__stream);
  46. int __pwdb_putpwent(__const struct __pwdb_passwd *__p, FILE *__stream);
  47.  
  48. /*
  49.  * Obtain pw entries for the user identified by
  50.  *  (i) their UID, or
  51.  * (ii) their "username"
  52.  */
  53.  
  54. struct __pwdb_passwd *__pwdb_getpwuid(__uid_t __uid);
  55. struct __pwdb_passwd *__pwdb_getpwnam(__const char *__name);
  56.  
  57. /*
  58.  * The group manipulation files
  59.  */
  60.  
  61. struct __pwdb_group {           /* The group structure.     */
  62.      char *gr_name;        /* Group name.    */
  63.      char *gr_passwd;        /* Password.    */
  64.      __gid_t gr_gid;        /* Group ID.    */
  65.      char **gr_mem;        /* Member list.    */
  66. };
  67.  
  68. /*
  69.  * Rewind the group-file stream.
  70.  */
  71.  
  72. void __pwdb_setgrent (void);
  73.  
  74. /*
  75.  * Close the group-file stream.
  76.  */
  77.  
  78. void __pwdb_endgrent (void);
  79.  
  80. /*
  81.  * Read an entry from the group-file stream, opening it if necessary.
  82.  */
  83.  
  84. struct __pwdb_group * __pwdb_getgrent (void);
  85.  
  86. /*
  87.  * Read/Write a group entry from STREAM.
  88.  */
  89.  
  90. struct __pwdb_group * __pwdb_fgetgrent (FILE * __stream);
  91. int __pwdb_putgrent(const struct __pwdb_group *__g, FILE *__stream);
  92.  
  93. /*
  94.  * Search for an entry with a matching group ID.
  95.  */
  96.  
  97. struct __pwdb_group * __pwdb_getgrgid (__gid_t __gid);
  98.  
  99. /*
  100.  * Search for an entry with a matching group name.
  101.  */
  102.  
  103. struct __pwdb_group * __pwdb_getgrnam (__const char *__name);
  104.  
  105. /*
  106.  * sgetpwent - convert a string to a (struct __pwdb_passwd)
  107.  */
  108. struct __pwdb_passwd *__pwdb_sgetpwent(const char *buf);
  109. struct __pwdb_group * __pwdb_sgetgrent(const char *buf);
  110.      
  111. /*
  112.  * LOW LEVEL FUNCTIONS
  113.  */
  114.  
  115. /*
  116.  * Locking functions we export
  117.  */
  118. int __pwdb_pw_lock (void);
  119. int __pwdb_gr_lock (void);
  120. int __pwdb_pw_unlock (void);
  121. int __pwdb_gr_unlock (void);
  122.  
  123. /* USER database low-level manipulation */
  124. int __pwdb_pw_close (void);
  125. const struct __pwdb_passwd * __pwdb_pw_locate (const char *);
  126. const struct __pwdb_passwd * __pwdb_pw_locate_id (__uid_t);
  127. int __pwdb_pw_name (const char *);
  128. const struct __pwdb_passwd * __pwdb_pw_next (void);
  129. int __pwdb_pw_open (int);
  130. int __pwdb_pw_remove (const char *);
  131. int __pwdb_pw_rewind (void);
  132. int __pwdb_pw_update (const struct __pwdb_passwd *);
  133.  
  134. /* GROUP database low-level manipulation */
  135.  
  136. struct __pwdb_gr_file_entry {
  137.     char *grf_line;
  138.     int grf_changed;
  139.     struct __pwdb_group *grf_entry;
  140.     struct __pwdb_gr_file_entry *grf_next;
  141. };
  142.  
  143. int __pwdb_gr_close (void);
  144. const struct __pwdb_group * __pwdb_gr_locate (const char *);
  145. const struct __pwdb_group * __pwdb_gr_locate_id (__gid_t);
  146. int __pwdb_gr_name (const char *);
  147. const struct __pwdb_group * __pwdb_gr_next (void);
  148. int __pwdb_gr_open (int);
  149. int __pwdb_gr_remove (const char *);
  150. int __pwdb_gr_rewind (void);
  151. int __pwdb_gr_update (const struct __pwdb_group *);
  152.  
  153. #endif /*  PWDB_STANDARD_PUBLIC_H */
  154.